1. Field
This application relates to communication networks and, more particularly, to the distribution of XML documents/messages by XML appliances/routers from publishers to subscribers.
2. Description of the Related Art
Data communication networks may include various network elements, such as routers and switches, configured to facilitate the flow of data through the network. Networks may also include other network elements, such as computers and printers, configured to transmit and receive data over the network.
Network elements may have different levels of intelligence, depending on the particular manner in which the network element is intended to operate on the network. For example, a network element may be relatively intelligent and configured to execute software to enable particular' applications to be run on the network element, so that the network element can provide services on the network. Alternatively, the network element may be provided with less intelligence and configured to perform a particular service on the network. An example of a less intelligent network element may be a printer connected to the network and configured to provide print services on the network. Optionally, different network elements may work together to collectively provide services on the network. As networks have developed, it has become possible to provide a greater variety of services on the networks.
XML (eXtensible Markup Language) documents/messages may be used to describe network services and to describe other types of information. XML provides a flexible manner to describe services and other information, yet is able to maintain a hierarchical structure. Since XML is well known, a detailed description of XML will not be provided.
Network elements may specify the type of XML documents/messages that are of interest by describing the structure and content of the XML documents/messages. One common way of describing XML documents/messages is to use a common access language referred to generally as XPath. XPath is a standard that has been confirmed by the World Wide Web Consortium (W3C) as a common language to access XML documents/messages. XPath is described in greater detail in XML Path Language XPath Version 1.0, the content of which is hereby incorporated by reference.
XPath may be used to enable a network element to specify which documents/messages a particular user or network element is interested in. This is referred to herein as a subscription. The XPath request will be sent to an XML appliance on the network, which will compare the XPath request against documents/messages that are received at the XML appliance. When the XML appliance receives a document/message that matches the XPath request, it will pass the document/message to the network element that made the request. More generally, when a document/message is published, the XML appliance may look at the structure and content of the documents/messages, compare the published document with known subscription requests, and forward the XML documents/messages to any network element that has expressed an interest in receiving documents of that nature. Thus, an XML document/message may be forwarded to interested applications/users without requiring the publishing network element to address the XML document/message to those applications/users. This is advantageous in that it enables XML documents/messages to be forwarded without requiring the publishing network element to learn the identity/address of the interested applications/users.
Since the structure/content of the XML document/message is used to direct the data through the network to subscribers that are interested in receiving that content, XML is in effect used to route data on the network. This type of routing will be referred to herein as XML routing. XML appliances on the network may be used to perform XML routing so that XML documents/messages may be routed to subscribers based on their content. XML appliances that make muting decisions based on XML content will be referred to herein as XML appliances/routers. Subscribers may advertise subscriptions to particular XML content (using an XPath expression) and the subscriptions may be forwarded to the XML appliances/routers. When an XML appliance/router receives an XML document/message matching an XML subscription, it will forward the XML document/message toward the subscriber.
FIG. 1 shows an example of a communication network 10 in which an XML appliance 12 is configured to make routing decisions with respect to XML information published by XML publishers 14 and subscribed to by XML subscribers 16. In the embodiment shown in FIG. 1, the XML publishers 14 include one or more servers 18 and the XML subscribers include one or more clients 20. The XML publishers and subscribers, of course, may be network devices other than servers and clients.
Clients 20 may be interested in XML content of a particular type. This interest may be formatted as an XPath subscription request that is then passed to the XML appliance. As XML documents/messages are received by the XML appliance, the XML appliance will check the XML documents/messages against the XPath subscription requests and make routing decisions to forward the XML documents/messages to the interested XML subscribers. Many different matching processes may be used to compare the XML documents/messages against the XPath rules associated with the XPath subscription requests.
XML rules associated with XML subscription requests may be contained in an XML muting table 22 or other memory structure that may be used by the XML appliance to correlate an XPath match with a particular routing decision. For example, the XML appliance may include a table in which entries in the table correlate XPath expression with output port, XPath expression and output interface, XPath expression with tunnel interface, or some other correlation between XPath expression and forwarding action. The muting table will then be used by the XML appliance/router to make XML routing decisions with respect to received XML documents/messages.
FIG. 2 shows an example of a number of XML appliances 12 interconnected to form an XML network. The physical network 13 over which the XML appliances communicate is independent of the network of XML appliances and will be assumed to be capable of interconnecting the XML appliances. Thus, the XML appliances 12 may be physically connected to each other via direct wires, wireless links, or via intermediate network elements such as routers and switches. Data may be tunneled between the XML appliances or otherwise carded by the underlying physical network in any convenient manner, and the network of XML appliances thus may be considered to be independent of the underlying physical network. For example, the XML appliances may be distributed within a larger network such as a LAN, WAN, or the Internet, and interconnected via switches, routers, or other types of network elements. The XML appliances, in this type of network, may exchange information that is then carried, as appropriate, by the underlying physical network interconnecting the XML appliances.
In the example shown in FIG. 2, the XML publishers and XML subscribers are the same as shown above in connection with FIG. 1. However, the intermediate XML network includes a plurality of XML appliances that are interconnected in a mesh or other network arrangement. Specifically, as shown in FIG. 2, the XML appliances have IP addresses 1.1.1.1 through 1.1.1.10. The subscribers are associated with network elements that are connected to XML appliances having IP addresses 1.1.1.7 through 1.1.1.10. Each of the subscribers may request access to XML content by submitting onto the XML network a set of XPath rules that will be transmitted between the XML appliances/routers as XML subscription requests. The XML subscription requests will be distributed throughout the XML network to the XML appliances to enable the XML appliances to make XML routing decisions.
In the embodiment shown in FIG. 2, two examples of XML routing tables have been shown associated with XML appliance 1.1.1.2. Specifically, the first XML muting table 22A shows that content matching XPath rules 1 and 2 should be forwarded to XML appliance 1.1.1.4 while XML content matching XPath rules 3 and 4 should be forwarded using XML appliance 1.1.1.3. This type of correlation may be useful for ingress routing, and optionally other types of XML muting. The example of FIG. 2 also shows a second possible way in which the rules may appear in the XML routing table, in which the XML routing tables designate the end point of a tunnel for the XML content. Specifically, as shown in FIG. 2, the XML routing table 22B may contain a correlation between rule 1 and the destination IP address 1.1.1.10. This enables the content to be tunneled through the network from an XML appliance that makes a decision to the destination of that traffic.
To enable XML appliances/routers to make decisions as to how XML content should be forwarded, the XML appliances/routers have conventionally distributed XML subscription information and built forwarding tables containing XPath expressions. Depending on the configuration of the XML network and the manner in which it the network was set up, XML routing decisions may be made at the ingress to the XML network (by the XML appliance that first receives the XML content), at the egress from the XML network (where the XML content is destined to leave the XML network), by the intermediate XML appliances/routers, or at some other way. XML routes may also be aggregated, hashed, or otherwise manipulated as well to enable efficient decision-making by the XML appliances/routers.
When a subscriber submitted a new XML subscription or modified a previous XML subscription, the XML subscription may be advertised to the XML appliances/routers using a standard routing protocol such as Open Shortest Path First (OSPF) or Border Gateway Protocol (BOP). However, flooding the network with XML subscriptions may consume significant network overhead, since XML subscriptions may change much more frequently than traditional routing information changes and the amount of information that is required to be transmitted may be much larger than traditional routing information, which may cause the XML routing tables to become rather large.